// pages/ar/ar.js
Page({
  data: {
    currentStep: 0,
    showARGuide: false,
    currentARGuide: null,
    currentGuideStep: 0,
    arFeatures: [
      {
        id: 1,
        title: '产品识别',
        description: '扫描产品包装或设备，自动识别产品型号',
        icon: '📱',
        color: '#3B82F6'
      },
      {
        id: 2,
        title: 'AR指引',
        description: '通过AR技术显示产品安装和使用步骤',
        icon: '🥽',
        color: '#10B981'
      },
      {
        id: 3,
        title: '实时帮助',
        description: '获取实时的操作指导和故障排除建议',
        icon: '🛠️',
        color: '#F59E0B'
      },
      {
        id: 4,
        title: '3D模型',
        description: '查看产品的3D模型和内部结构',
        icon: '🎯',
        color: '#8B5CF6'
      }
    ],
    guideSteps: [
      {
        step: 1,
        title: '启动AR扫描',
        description: '点击"开始扫描"按钮，允许相机权限',
        image: '📷'
      },
      {
        step: 2,
        title: '对准产品',
        description: '将相机对准产品包装或设备上的二维码',
        image: '🎯'
      },
      {
        step: 3,
        title: '等待识别',
        description: '保持稳定，等待系统识别产品信息',
        image: '⏳'
      },
      {
        step: 4,
        title: '查看指引',
        description: '识别成功后，查看AR指引和操作步骤',
        image: '✨'
      }
    ],
    isScanning: false,
    scanResult: null
  },

  onLoad(options) {
    // 页面加载时的初始化
  },

  onShow() {
    // 页面显示时重置状态
    this.setData({
      currentStep: 0,
      isScanning: false,
      scanResult: null
    })
  },

  // 开始AR扫描
  startARScan() {
    // 检查相机权限
    wx.getSetting({
      success: (res) => {
        if (res.authSetting['scope.camera']) {
          this.performScan()
        } else {
          wx.authorize({
            scope: 'scope.camera',
            success: () => {
              this.performScan()
            },
            fail: () => {
              wx.showModal({
                title: '需要相机权限',
                content: 'AR功能需要访问相机，请在设置中开启相机权限',
                confirmText: '去设置',
                success: (res) => {
                  if (res.confirm) {
                    wx.openSetting()
                  }
                }
              })
            }
          })
        }
      }
    })
  },

  // 执行扫描
  performScan() {
    this.setData({ isScanning: true })
    
    // 启动相机扫描
    wx.scanCode({
      success: (res) => {
        console.log('扫描结果:', res)
        this.handleScanResult(res)
      },
      fail: (err) => {
        console.error('扫描失败:', err)
        this.handleScanError(err)
      },
      complete: () => {
        this.setData({ isScanning: false })
      }
    })
  },

  // 处理扫描结果
  handleScanResult(res) {
    wx.showLoading({
      title: '识别中...'
    })

    // 模拟产品识别API调用
    setTimeout(() => {
      wx.hideLoading()
      
      // 根据扫描结果识别产品
      const productInfo = this.identifyProduct(res.result)
      
      this.setData({ 
        scanResult: {
          productName: productInfo.name,
          model: productInfo.model,
          status: 'success',
          qrCode: res.result,
          imagePath: res.imagePath || ''
        }
      })
      
      wx.showToast({
        title: '识别成功',
        icon: 'success'
      })
    }, 1500)
  },

  // 处理扫描错误
  handleScanError(err) {
    wx.hideLoading()
    wx.showModal({
      title: '扫描失败',
      content: '无法识别产品，请确保二维码清晰可见，或尝试手动输入产品信息',
      confirmText: '重新扫描',
      cancelText: '手动输入',
      success: (res) => {
        if (res.confirm) {
          this.startARScan()
        } else {
          this.showManualInput()
        }
      }
    })
  },

  // 产品识别逻辑
  identifyProduct(qrCode) {
    // 模拟产品数据库
    const productDatabase = {
      'HONOR_MAGIC6_PRO': {
        name: 'Magic 6 Pro',
        model: 'HONOR Magic 6 Pro',
        category: '智能手机'
      },
      'HONOR_MAGIC6': {
        name: 'Magic 6',
        model: 'HONOR Magic 6',
        category: '智能手机'
      },
      'HONOR_PAD9': {
        name: 'HONOR Pad 9',
        model: 'HONOR Pad 9',
        category: '平板电脑'
      }
    }

    // 简单的识别逻辑
    for (let key in productDatabase) {
      if (qrCode.includes(key) || qrCode.includes(key.toLowerCase())) {
        return productDatabase[key]
      }
    }

    // 默认返回
    return {
      name: '未知产品',
      model: '请手动输入产品信息',
      category: '其他'
    }
  },

  // 显示手动输入界面
  showManualInput() {
    wx.showModal({
      title: '手动输入',
      content: '请输入产品型号或扫描其他二维码',
      editable: true,
      placeholderText: '请输入产品型号',
      success: (res) => {
        if (res.confirm && res.content) {
          const productInfo = this.identifyProduct(res.content)
          this.setData({ 
            scanResult: {
              productName: productInfo.name,
              model: productInfo.model,
              status: 'manual',
              qrCode: res.content
            }
          })
        }
      }
    })
  },

  // 查看产品详情
  viewProductDetail() {
    if (this.data.scanResult) {
      wx.showModal({
        title: this.data.scanResult.productName,
        content: `型号：${this.data.scanResult.model}\n\n点击确定查看详细的使用指南和AR指引`,
        confirmText: '查看指南',
        cancelText: '取消',
        success: (res) => {
          if (res.confirm) {
            this.showARGuide()
          }
        }
      })
    }
  },

  // 显示AR指引
  showARGuide() {
    const productName = this.data.scanResult.productName
    const arGuides = this.getARGuides(productName)
    
    wx.showActionSheet({
      itemList: arGuides.map(guide => guide.title),
      success: (res) => {
        const selectedGuide = arGuides[res.tapIndex]
        this.startARGuide(selectedGuide)
      }
    })
  },

  // 获取AR指引数据
  getARGuides(productName) {
    const guideDatabase = {
      'Magic 6 Pro': [
        {
          title: '开机设置指引',
          type: 'setup',
          steps: [
            { action: '长按电源键3秒', icon: '🔋', description: '启动设备' },
            { action: '选择语言', icon: '🌐', description: '设置系统语言' },
            { action: '连接WiFi', icon: '📶', description: '配置网络连接' },
            { action: '登录账号', icon: '👤', description: '设置用户账号' }
          ]
        },
        {
          title: '相机使用指引',
          type: 'camera',
          steps: [
            { action: '打开相机应用', icon: '📷', description: '点击相机图标' },
            { action: '选择拍摄模式', icon: '⚙️', description: '选择拍照或录像' },
            { action: '调整参数', icon: '🎛️', description: '设置曝光、对焦等' },
            { action: '开始拍摄', icon: '📸', description: '按下快门按钮' }
          ]
        },
        {
          title: '充电连接指引',
          type: 'charging',
          steps: [
            { action: '准备充电器', icon: '🔌', description: '使用原装充电器' },
            { action: '连接充电线', icon: '🔗', description: '插入充电接口' },
            { action: '确认充电状态', icon: '⚡', description: '查看充电指示灯' },
            { action: '等待充电完成', icon: '⏳', description: '保持连接状态' }
          ]
        }
      ],
      'Magic 6': [
        {
          title: '基础设置指引',
          type: 'basic',
          steps: [
            { action: '开机启动', icon: '🚀', description: '长按电源键开机' },
            { action: '网络设置', icon: '🌐', description: '连接WiFi网络' },
            { action: '账号登录', icon: '👤', description: '登录华为账号' }
          ]
        }
      ]
    }

    return guideDatabase[productName] || [
      {
        title: '通用使用指引',
        type: 'general',
        steps: [
          { action: '查看说明书', icon: '📖', description: '阅读产品说明书' },
          { action: '联系客服', icon: '📞', description: '获取技术支持' }
        ]
      }
    ]
  },

  // 开始AR指引
  startARGuide(guide) {
    this.setData({
      currentARGuide: guide,
      currentGuideStep: 0,
      showARGuide: true
    })
    
    // 播放语音指引
    this.playVoiceGuide(guide.steps[0])
  },

  // 播放语音指引
  playVoiceGuide(step) {
    // 使用微信的语音合成API
    wx.createInnerAudioContext({
      src: '', // 这里可以配置语音文件URL
      success: () => {
        console.log('语音播放成功')
      },
      fail: (err) => {
        console.log('语音播放失败:', err)
        // 如果语音播放失败，显示文字提示
        wx.showToast({
          title: step.description,
          icon: 'none',
          duration: 2000
        })
      }
    })
  },

  // AR指引下一步
  nextARStep() {
    const guide = this.data.currentARGuide
    const currentStep = this.data.currentGuideStep
    
    if (currentStep < guide.steps.length - 1) {
      this.setData({
        currentGuideStep: currentStep + 1
      })
      
      // 播放下一步的语音指引
      this.playVoiceGuide(guide.steps[currentStep + 1])
    } else {
      // 指引完成
      this.completeARGuide()
    }
  },

  // AR指引上一步
  prevARStep() {
    const currentStep = this.data.currentGuideStep
    
    if (currentStep > 0) {
      this.setData({
        currentGuideStep: currentStep - 1
      })
      
      // 播放上一步的语音指引
      this.playVoiceGuide(this.data.currentARGuide.steps[currentStep - 1])
    }
  },

  // 完成AR指引
  completeARGuide() {
    wx.showModal({
      title: '指引完成',
      content: '恭喜您完成了AR使用指引！是否还需要其他帮助？',
      confirmText: '查看其他指引',
      cancelText: '完成',
      success: (res) => {
        if (res.confirm) {
          this.showARGuide()
        } else {
          this.setData({
            showARGuide: false,
            currentARGuide: null,
            currentGuideStep: 0
          })
        }
      }
    })
  },

  // 关闭AR指引
  closeARGuide() {
    this.setData({
      showARGuide: false,
      currentARGuide: null,
      currentGuideStep: 0
    })
  },

  // 重新扫描
  rescan() {
    this.setData({
      scanResult: null,
      currentStep: 0
    })
  },

  // 查看使用指南
  viewGuide() {
    wx.navigateTo({
      url: '/pages/help/help'
    })
  },

  // 下一步指引
  nextStep() {
    if (this.data.currentStep < this.data.guideSteps.length - 1) {
      this.setData({
        currentStep: this.data.currentStep + 1
      })
    }
  },

  // 上一步指引
  prevStep() {
    if (this.data.currentStep > 0) {
      this.setData({
        currentStep: this.data.currentStep - 1
      })
    }
  },

  // 跳转到说明书库
  goToManual() {
    wx.switchTab({
      url: '/pages/category/category'
    })
  },

  // 分享功能
  onShareAppMessage() {
    return {
      title: 'AR产品指引 - 智能识别，轻松使用',
      path: '/pages/ar/ar',
      imageUrl: ''
    }
  }
})